Distributed data storage systems, such as those used in cloud computing environments, often rely on a metadata server to identify which servers store what data. This metadata server typically maintains a metadata table or namespace mapping identifiers associated with data to the servers that store the data. Because the file system must be durable even across reboots of the metadata server, the metadata server typically stores the metadata table or namespace in permanent (durable) storage. While the use of permanent storage may ensure that system metadata is not lost to metadata server failures, permanent storage is typically quite slow. Thus, the use of permanent storage may cause poor performance when the metadata server needs to update or distribute the metadata table.
Also, the metadata server typically manages changes to the metadata table or namespace responsive to failures of other data servers of the system. The metadata server may select a replacement server for a failed server and update the metadata table or namespace to reflect the replacement. The metadata server may also manage a recovery process during which data from a replica of the failed server is written to the replacement server. During this recovery process, the metadata server may delay responding to client requests for an updated metadata table or namespace to ensure that the recovery process is complete prior to client interactions with the servers. This delay, however, comes at the cost of system performance, as clients must wait until the recovery process completes to renew their operations.